#ifndef YOLOV6_FACE_DEPLOY_H
#define YOLOV6_FACE_DEPLOY_H


#include "trtModelDeploy.h"

class yolov6_face_deploy : public trtModelDeploy
{
public:
    explicit yolov6_face_deploy(const std::string& modelPath, const std::string& classPath);
    virtual ~yolov6_face_deploy() = default;

    void infer(const cv::Mat& image);
    void init_size(const std::string& classPath);
    cv::Mat preprocess(const cv::Mat& image);
    void postprocess(const cv::Mat& image) override;

private:
    int inputsize = 1;
    int outputsize = 1;
    float *input = nullptr;
    float *output = nullptr;
    void *buffers[2] = {NULL, NULL};
    float x_factor = 0.0;
    float y_factor = 0.0;
    int input_w = 0;
    int input_h = 0;
    int out_num = 0;
    int out_ch = 0;
    int64_t start_time;
    int64_t end_time;
    cv::Mat m1_factor;
    std::string classLabelPath;
    std::vector<std::string> labels;
};

#endif  // End YOLOV6_FACE_DEPLOY_H